package com.aspose.cells;

abstract class zo extends zj {
   protected zapc c;

   public zo(zhh var1, String var2) {
      super(var1, var2);
   }

   public double a(double var1) {
      return this.c(var1 * this.c.a()) / this.c.a();
   }

   public zapc d() {
      return this.c;
   }

   protected abstract double c(double var1);

   public abstract void a(zxu var1, double var2, zxz var4);

   public zxz a(zxu var1, int var2, Object var3) {
      zxz var4 = super.a(var1, var2, var3);
      if (var4.f() != 7) {
         return var4;
      } else {
         switch(var2) {
         case 9:
            this.a(var1, (double)(Integer)var3 * this.c.a(), var4);
            return var4;
         case 14:
            this.a(var1, (Double)var3 * this.c.a(), var4);
            return var4;
         case 16:
            this.a(var1, this.a((DateTime)var3) * this.c.a(), var4);
            return var4;
         default:
            this.a(var3, var2, var4);
            return var4;
         }
      }
   }

   protected void d(char[] var1, int var2, int var3, StringBuilder var4) {
      this.c = new zapc();
      int var5 = 0;
      boolean var6 = false;
      boolean var7 = false;
      int var8 = 0;
      int[] var9 = new int[var3 - var2];

      while(true) {
         label104:
         while(var2 < var3) {
            switch(var1[var2]) {
            case '#':
            case '?':
               if (this.c.c() < 0) {
                  if (this.c.a() < 1.0D) {
                     this.c.c(true);
                  }

                  var9[var8] = var4.length();
                  ++var8;
               } else if (var7) {
                  ++var5;
               }

               this.c.a(1.0D);
               break;
            case '%':
               if (!var6) {
                  var6 = true;
               }
               break;
            case '(':
               this.c.d(true);
               break;
            case ',':
               if (var2 > 0) {
                  switch(var1[var2 - 1]) {
                  case '#':
                  case '0':
                     ++var2;
                     this.c.a(this.c.a() * 0.001D);

                     while(true) {
                        if (var2 >= var3 || var1[var2] != ',') {
                           continue label104;
                        }

                        this.c.a(this.c.a() * 0.001D);
                        ++var2;
                     }
                  }
               }
               break;
            case '.':
               if (this.c.c() < 0) {
                  this.c.b(var4.length());
                  var7 = true;
               }
               break;
            case '/':
               var6 = false;
               var7 = false;
               break;
            case '0':
               if (var7) {
                  ++var5;
                  this.c.b(false);
               } else if (this.c.c() < 0) {
                  this.c.a(false);
                  if (this.c.a() < 1.0D) {
                     this.c.c(true);
                  }

                  var9[var8] = var4.length();
                  ++var8;
               }

               this.c.a(1.0D);
               break;
            case 'E':
            case 'e':
               this.c.c(var4.length());
               var4.append(var1[var2]);
               ++var2;

               while(true) {
                  if (var2 >= var3) {
                     continue label104;
                  }

                  var2 = this.b(var1, var2, var3, var4);
               }
            case '\\':
               var4.append('\\');
               ++var2;
               if (var2 < var3) {
                  if (var1[var2] == '(') {
                     this.c.d(true);
                  }

                  var4.append(var1[var2]);
                  ++var2;
               }
               continue;
            default:
               var2 = this.b(var1, var2, var3, var4);
               continue;
            }

            var4.append(var1[var2]);
            ++var2;
         }

         if (var6) {
            this.c.a(this.c.a() * 100.0D);
         }

         this.c.a(var5);
         if (this.c.g()) {
            if (var8 < 4) {
               String var10;
               switch(var8) {
               case 1:
                  var10 = "#,##";
                  break;
               case 2:
                  var10 = "#,#";
                  break;
               default:
                  var10 = "#,";
               }

               var4.insert(var9[0], var10);
            } else {
               for(var8 -= 3; var8 > 0; var8 -= 3) {
                  var4.insert(var9[var8], ',');
               }
            }
         }

         return;
      }
   }

   protected int a(char[] var1, int var2, int var3, StringBuilder var4) {
      switch(var1[var2]) {
      case '#':
      case '+':
      case ',':
      case '-':
      case '.':
      case '0':
      case 'E':
      case 'e':
         var4.append(var1[var2]);
         ++var2;
         break;
      default:
         var2 = super.a(var1, var2, var3, var4);
      }

      return var2;
   }

   public int a() {
      return 2;
   }

   public int g() {
      return 2;
   }
}
